package com.erp.auto.service.impl;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.erp.auto.domain.ErpAutoSellerStoreConfigErrorCategory;
import com.erp.auto.mapper.ErpAutoPulishProductProjectTaskMapper;
import com.erp.auto.mapper.ErpAutoSellerStoreConfigErrorCategoryMapper;
import com.erp.auto.mapper.ErpAutoSellerStoreConfigMapper;
import com.erp.auto.service.ErpAutoSellerStoreConfigErrorCategoryService;
import com.erp.auto.service.ErpAutoSellerStoreConfigService;
import com.ruoyi.auto.api.domain.ErpAutoPulishProductProjectTask;
import com.ruoyi.auto.api.domain.ErpAutoSellerStoreConfig;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.gather.api.RemoteCollectProductService;
import lombok.AllArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 自动化店铺配置
 *
 * @author WXX
 * @date 2023-12-27 19:22:13
 */
@Service
@AllArgsConstructor
public class ErpAutoSellerStoreConfigErrorCategroyServiceImpl implements ErpAutoSellerStoreConfigErrorCategoryService {
    @Resource
    RestTemplate restTemplate;
    @Resource
    RemoteCollectProductService remoteCollectProductService;

    private final ErpAutoSellerStoreConfigMapper erpAutoSellerStoreConfigMapper;
    private final ErpAutoSellerStoreConfigService erpAutoSellerStoreConfigService;
    private final ErpAutoSellerStoreConfigErrorCategoryMapper erpAutoSellerStoreConfigErrorCategoryMapper;
    private final ErpAutoPulishProductProjectTaskMapper erpAutoPulishProductProjectTaskMapper;


    @Override
    public R<Object> jobSignStore(Long storeId) {
        List<ErpAutoSellerStoreConfig> erpAutoSellerStoreConfigs = new ArrayList<>();
        if (ObjectUtils.isNull(storeId)) {
            //为空，则取全部
            erpAutoSellerStoreConfigs = erpAutoSellerStoreConfigMapper.selectList(
                    new LambdaQueryWrapper<ErpAutoSellerStoreConfig>()
                            .eq(ErpAutoSellerStoreConfig::getStatus, 1)
            );
        } else {
            ErpAutoSellerStoreConfig sellerStoreConfig = erpAutoSellerStoreConfigMapper.selectOne(
                    new LambdaQueryWrapper<ErpAutoSellerStoreConfig>()
                            .eq(ErpAutoSellerStoreConfig::getStoreId, storeId)
                            .eq(ErpAutoSellerStoreConfig::getStatus, 1)
            );
            erpAutoSellerStoreConfigs.add(sellerStoreConfig);
        }
        int count = 0;
        for (ErpAutoSellerStoreConfig store : erpAutoSellerStoreConfigs) {
            //获取该店铺所有错误为没有符合要求的品牌的任务，找到对应的分类
            List<ErpAutoPulishProductProjectTask> taskList = erpAutoPulishProductProjectTaskMapper.selectList(
                    new LambdaQueryWrapper<ErpAutoPulishProductProjectTask>()
                            .eq(ErpAutoPulishProductProjectTask::getStoreId, store.getStoreId())
                            .eq(ErpAutoPulishProductProjectTask::getStatus, 3)
                            .like(ErpAutoPulishProductProjectTask::getRemark, "品牌")
            );

            //查找对应分类
            for (ErpAutoPulishProductProjectTask task : taskList) {

                //TODO 改造为内部类调用
                R<Object> innerObject = remoteCollectProductService.getCollectProductCategoryInfoInner(task.getCollectProductId());
                String body = JSONObject.toJSONString(innerObject.getData());
                JSONObject json = JSONObject.parseObject(body);
                Integer code = innerObject.getCode();
                if (code == 200) {
                    String data = json.getString("data");
                    JSONObject mapData = JSONObject.parseObject(data);
                    Long categoryId = mapData.getLong("categoryId");
                    String name = mapData.getString("name");
                    ErpAutoSellerStoreConfigErrorCategory category = erpAutoSellerStoreConfigErrorCategoryMapper.selectOne(
                            new LambdaQueryWrapper<ErpAutoSellerStoreConfigErrorCategory>()
                                    .eq(ErpAutoSellerStoreConfigErrorCategory::getCategoryId, categoryId)
                                    .eq(ErpAutoSellerStoreConfigErrorCategory::getStoreId, store.getStoreId())
                    );
                    if (ObjectUtils.isNull(category)) {
                        //为空则插入
                        ErpAutoSellerStoreConfigErrorCategory categoryAdd = new ErpAutoSellerStoreConfigErrorCategory();
                        categoryAdd.setCategoryId(categoryId);
                        categoryAdd.setCategoryName(name);
                        categoryAdd.setStoreId(store.getStoreId());
                        categoryAdd.setStoreAlias(store.getStoreAlias());
                        categoryAdd.setCreateTime(new Date());
                        erpAutoSellerStoreConfigErrorCategoryMapper.insert(categoryAdd);
                        count++;
                    } else {
                        continue;
                    }
                } else {
                    continue;
                }
            }
        }
        return R.ok("插入" + count + "个类目");
    }

    @Override
    public R<Object> createGroupAgain() {
        List<ErpAutoSellerStoreConfig> moduleConfig = erpAutoSellerStoreConfigMapper.selectList(
                new LambdaQueryWrapper<ErpAutoSellerStoreConfig>()
                        .eq(ErpAutoSellerStoreConfig::getStatus, 1)
        );

        for (ErpAutoSellerStoreConfig store : moduleConfig) {
//            List<ErpAutoPulishProductProjectTask> taskList = erpAutoPulishProductProjectTaskMapper.selectList(
//                    new LambdaQueryWrapper<ErpAutoPulishProductProjectTask>()
//                            .eq(ErpAutoPulishProductProjectTask::getStoreId, store.getStoreId())
//                            .in(ErpAutoPulishProductProjectTask::getStatus, 2,12,22)
//            );
//            int size = taskList.size();
//
//            //符合标准
//            //获取任务id
//            List<Long> aeProductIdLists = taskList.stream()
//                    .map(ErpAutoPulishProductProjectTask::getAeProductId)
//                    .collect(Collectors.toList());
//
//            //转为List<String>
//            List<String> aeProductIdStr = aeProductIdLists.stream()
//                    .map(String::valueOf)
//                    .collect(Collectors.toList());


            //TODO 改造为内部类调用
//            ResponseEntity<String> forEntity = restTemplate
//                    .getForEntity(erpConfig.getEndpoint() + "/gather/autoQueryInfo/createGroupAgain?storeId=" + store.getStoreId(), String.class);
        }
        return null;
    }

    @Override
    public boolean deleteById(Long id) {
        int deleteById = erpAutoSellerStoreConfigErrorCategoryMapper.deleteById(id);
        return deleteById > 0;
    }

    @Override
    public List<ErpAutoSellerStoreConfigErrorCategory> selectList(ErpAutoSellerStoreConfigErrorCategory category) {
        // 查询该用户的店铺
        LambdaQueryWrapper<ErpAutoSellerStoreConfigErrorCategory> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(ErpAutoSellerStoreConfigErrorCategory::getStoreId, category.getStoreId());
        return erpAutoSellerStoreConfigErrorCategoryMapper.selectList(queryWrapper);

    }
}
